/**
 * 
 */

package com.tenentia.pcmps.swm.data.interfaces;

import java.util.Date;
import java.util.List;

import com.tenentia.pcmps.swm.data.DataAccessException;
import com.tenentia.pcmps.swm.data.DataAccessObject;
import com.tenentia.pcmps.swm.data.beans.InsurancePolicy;
import com.tenentia.pcmps.swm.data.beans.InsurancePolicyInitialCapital;
import com.tenentia.pcmps.swm.data.beans.InsurancePolicyPaymentType;
import com.tenentia.pcmps.swm.data.beans.InsurancePolicyStatus;
import com.tenentia.pcmps.swm.data.beans.InsurancePolicyType;

/**
 * 
 * @author tEnEntia, S.L.N.E.
 * 
 */
public interface InsurancePoliciesDAO extends DataAccessObject {

	public void deleteInstance(InsurancePolicy insurancePolicy) throws DataAccessException;

	public InsurancePolicy getInstance(InsurancePolicy insurancePolicy) throws DataAccessException;
	
	public List<InsurancePolicy> getTableItemsByRange(Object filterParameters, Object sortParameters, Integer firstRow, Integer numberOfRows) throws DataAccessException;
	
	public List<InsurancePolicy> getAllTableItems(Object filterParameters, Object sortParameters) throws DataAccessException;

	public Integer getTableRowCount(Object filterParameters) throws DataAccessException;

	public InsurancePolicy saveInstance(InsurancePolicy insurancePolicy) throws DataAccessException;

	public InsurancePolicy updateInstance(InsurancePolicy insurancePolicy) throws DataAccessException;
	
	public InsurancePolicyType getInsurancePolicyType (InsurancePolicyType insurancePolicyType) throws DataAccessException;
	
	public InsurancePolicyPaymentType getInsurancePolicyPaymentType (InsurancePolicyPaymentType insurancePolicyPaymentType) throws DataAccessException;
	
	public InsurancePolicyInitialCapital getInsurancePolicyInitialCapitalByDate (Date date) throws DataAccessException;

	public InsurancePolicyStatus getInsurancePolicyStatus (InsurancePolicyStatus insurancePolicyStatus) throws DataAccessException;
	
}
